<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        //异常处理基本形式
        // try语句包含了由一个或者多个语句组成的try块, 和至少一个catch子句或者一个finally子句的其中一个
        // 或者两个兼有， 下面是三种形式的try声明:
        // try...catch
        // try...finally
        // try...catch...finally


        try {
            console.log(aaa);
        } catch (e) {
            console.log("报错信息：" + e);
        }

        console.log(456);


        try {
            console.log(aaa);
        } finally {
            console.log(123);//始终会执行的代码
        }
        console.log(456);



        try {
            console.log(aaa);
        } catch (e) {
            console.log("报错信息：" + e);
        } finally {
            console.log(123);
        }
        console.log(456);

        /*
        catch语句中包含要执行的语句，当try语句中抛出错误时。
        也就是，你想让try语句中的内容成功， 如果没成功，你想控制接下来发生的事情，这时你可以在catch语句中实现。

        如果有在try块中有任何一个语句（或者从try块中调用的函数）抛出异常, 控制立即转向catch子句。
        如果在try块中没有异常抛出，则catch子句将会跳过。

        finally子句无论是否有异常抛出或着是否被捕获它总是执行。
 */
    </script>
</body>

</html>